﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using PSE.Deployment.Engine.Enums;
using PSE.Deployment.Engine.CustomEventArgs;

namespace PSE.Deployment.Engine.Interfaces
{
    public interface IStepGroup : IStep
    {
        StepGroupCancelBehavior CancelBehavior
        { get; set; }

        StepCollection Steps
        { get; set; }

        StepCollection ExecutedSteps
        { get; set; }

        StepCollection IgnoredSteps
        { get; set; }

        void Cancel();
        void Stop();
        void GoToPrevious();

        event EventHandler<ExecutionCanceledEventArgs> ExecutionCanceled;

        void OnExecutionCanceled(ExecutionCanceledEventArgs e);
        void OnExecutionCanceled(object sender, ExecutionCanceledEventArgs e);
        void WriteStepLog(IStep step, string logText);
    }
}
